package com.ruoyi.student.adopt;

import com.ruoyi.college.domain.College;
import com.ruoyi.college.service.ICollegeService;
import com.ruoyi.student.service.IStudentInfoService;
import com.ruoyi.system.service.ISysUserService;
import org.openoa.base.service.AfUserService; // 假设你用这个查用户-学院关联
// 你需要加的“学院-秘书”服务
import org.openoa.base.vo.BaseIdTranStruVo;
import org.openoa.base.vo.BpmnStartConditionsVo;
import org.openoa.engine.bpmnconf.service.biz.personnelinfoprovider.AbstractDifferentStandardAssignNodeAssigneeVoProvider;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.List;

// 继承和直属领导一样的基类，复用通用逻辑
@Component("collegeSecretaryPersonnelProvider") // 名称要和桥接类的@Qualifier一致
public class CollegeSecretaryPersonnelProvider extends AbstractDifferentStandardAssignNodeAssigneeVoProvider {

    @Autowired
    private ISysUserService userService; // 查“用户所属学院”的服务（复用现有）
    @Autowired
    private IStudentInfoService studentInfoService; // 查“学生信息”的服务（复用现有）
    @Autowired
    private ICollegeService collegeService; // 你新增的“查学院秘书”服务

    // 重写查询方法：输入是“发起人ID列表”，输出是“学院秘书列表”
    @Override
    protected List<BaseIdTranStruVo> queryUsers(List<String> initiatorIds) {
        // 1. 取第一个发起人ID（流程只有一个发起人）
        // 新增：直接从startConditionsVo拿原始的startUserId，看是不是1
        System.out.println("---------"+initiatorIds);

        String initiatorId = initiatorIds.get(0);
        String userName = userService.selectUserNameByUserId(initiatorId);
        System.out.println("---------"+userName);
        // 2. 步骤1：查发起人所属学院ID（需你确认AfUserService是否有该方法，没有就加）
        String collegeCodes = studentInfoService.selectStudentCollegeCodesByStudentId(userName); // 假设新增此方法
        System.out.println(collegeCodes);
        String deptId = collegeService.selectCollegeByCollegeCode(collegeCodes).getDeptId();
        System.out.println("---------"+deptId);
        List<BaseIdTranStruVo> secretaryList = userService.selectUsersByDeptId(deptId);
        System.out.println("---------"+userService.selectUsersByDeptId(deptId));
        System.out.println("---------"+secretaryList);
        return secretaryList;
    }
}